// 入口文件  
import Vue from 'vue';

// 1.1导入路由的包
import VueRouter from 'vue-router'
// 1.2安装路由
Vue.use(VueRouter)

//注册vuex
import Vuex from 'vuex';
Vue.use(Vuex)

//每次刚进入网站，肯定会调用main.js，在刚调用时候，先从本地存储中，把购物车的数据读出来，放到store
var car=JSON.parse(localStorage.getItem('car')||[])

var store =new Vuex.Store({
	state:{ //this.$store.state.***
		car:car
		//将购物车中商品数据，用一个数组存起来，在car数据中存一些商品对象，
		//	{id:'',count:'',price:'',selected:true}

		
	},
	mutations:{//this.$store.commit(方法名,参数)
		addToCar(state,goodsinfo){
			//点击加入购物车，把商品信息，保存到store中的car上
			// 1.如果购物车中，之前就已经有这个商品了，那么只需要更新数量
			// 2.如果没有则直接把商品数据push到car中即可

			//假设 在购物车中没有找到对应商品
			var flag=false;
			state.car.some(item=>{
				if(item.id==goodsinfo.id){
					item.count+=parseInt(goodsinfo.count)
					flag=true;
					return true;
				}
			})

			//如果最终，循环完毕，得到flag还是false，则把商品数据直接push到购物车中
			if(!flag){
				state.car.push(goodsinfo)
			}

			//当更新car后，把car存在本地localStorage
			localStorage.setItem('car',JSON.stringify(state.car))

		},
		updateGoodsInfo(state,goodsinfo){
			//修改购物车中商品的数量值
			// 
			state.car.some(item=>{
				if(item.id==goodsinfo.id){
					item.count=parseInt(goodsinfo.count)
					return true;
				}
			})
			//当修改完商品数量，把最新购物车数据保存在本地localStorage
			localStorage.setItem('car',JSON.stringify(state.car))

		},
		removeFormCar(state,id){
			//根据id，从store中的购物车中删除对应的那条商品数据
			state.car.some((item,i)=>{
				if(item.id==id){
					state.car.splice(i,1)
					return true;
				}
			})

			//把删除完最新购物车数据保存在本地localStorage
			localStorage.setItem('car',JSON.stringify(state.car))

		},
		updateGoodsSelected(state,info){
				state.car.some(item=>{
						if(item.id==info.id){
							item.selected=info.selected
						}
				})
			//把最新购物车商品状态保存在本地localStorage
		localStorage.setItem('car',JSON.stringify(state.car))
		}
	},
	getters:{//this.$store.getters.***
		// 相当于计算属性和过滤器
		getAllCount(state){
			var c=0;
			state.car.forEach(item=>{
				c+=item.count
			})
			return c;
		},

		getGoodsCount(state){
			var o={};
			state.car.forEach(item=>{
				o[item.id]=item.count
			})
			return o;
		},
		getGoodsSelected(state){
			var o={};
			state.car.forEach(item=>{
				o[item.id]=item.selected
			})
			return o;
		},
		getGoodsCountAmound(state){
			var o={
				count:0,//  勾选的数量
				amount:0 //勾选的总价
			};
			state.car.forEach(item=>{
				if(item.selected==true){
					o.count+=item.count;
					o.amount+=item.price*item.count;
				}
			})
			return o;
		}
	}
})

//导入时间插件
import moment from 'moment'
//定义全局过滤器
Vue.filter('dateFormat',function(dataStr,pattern="YYYY-MM-DD HH:mm:ss"){
	return moment(dataStr).format(pattern)
})

//2.1 导入 vue-resource
import VueResource from 'vue-resource';
// 2.2安装vue-resource
Vue.use(VueResource);
//设置请求的根路径
Vue.http.options.root = 'http://www.liulongbin.top:3005';
// 全局设置post请求表单数据格式
Vue.http.options.emulateJSON = true;

// 导入mui样式
import './lib/mui/css/mui.min.css';
import './lib/mui/css/icons-extra.css';

//安装图片预览插件
import VuePreview from 'vue2-preview'
Vue.use(VuePreview)

/* 按需导入 Mint-UI组件
import {Header, Swipe, SwipeItem,Button,Lazyload} from 'mint-ui';
Vue.component(Header.name,Header);
Vue.component(Swipe.name, Swipe);
Vue.component(SwipeItem.name, SwipeItem);
Vue.component(Button.name, Button);
Vue.use(Lazyload);*/

 //全部导入 Mint-UI组件
import MintUI from 'mint-ui';
Vue.use(MintUI)
import 'mint-ui/lib/style.css'

// 1.3导入自己的router.js路由模块
import router from './router.js'

//导入App根组件
import app from './App.vue';

var vm=new Vue({
	el:"#app",
	render:c=>c(app),
	router, //1.4挂载路由对象
	store  //挂载vuex store状态管理对象


})